博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BBS论坛(十)
阅读量:6850 次
发布时间:2019-06-26

本文共 4261 字,大约阅读时间需要 14 分钟。

10.1.客户端权限验证功能完成

(1)cms/cms_profile

显示当前用户的角色和权限

                角色:                                    {% for role in user.roles %}                        {
{ role.name }} {% if not loop.last %},{% endif %} {% endfor %} 权限: {% for role in user.roles %} {
{ role.desc }} {% if not loop.last %}/{% endif %} {% endfor %}

 (2)cms/hooks.py

@bp.context_processordef cms_context_pocessor():    return {
'CMSPermission':CMSPermission}

 (3)cms/cms_base.html

不同的角色,显示不同的内容

{% set cms_user = g.cms_user %}                {% if cms_user.has_permission(CMSPermission.POSTER) %}                    
  • 帖子管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.COMMENTER) %}
  • 评论管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.BOARDER) %}
  • 板块管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.FRONTUSER) %} {% endif %} {% if cms_user.has_permission(CMSPermission.CMSUSER) %} {% endif %} {% if cms_user.is_developer %}
  • CMS组管理
  • {% endif %}

    (4)添加用户和角色

    #添加访问者python manage.py create_cms_user -u 我是访问者 -p 123456 -e 11111@qq.compython manage.py add_user_to_role -e 11111@qq.com -n 访问者#添加运营者python manage.py create_cms_user -u 我是运营者 -p 123456 -e 22222@qq.compython manage.py add_user_to_role -e 22222@qq.com -n 运营#添加管理员python manage.py create_cms_user -u 我是管理员 -p 123456 -e 33333@qq.compython manage.py add_user_to_role -e 33333@qq.com -n 管理员

    不同的用户登录到后台cms显示不同的内容

     开发者

     

    访问者

     

    10.2.服务端权限验证功能完成

     (1)后台剩余的html页面

    cms_posts.html

    {% extends 'cms/cms_base.html' %}{% block title %}    帖子管理{% endblock %}{% block head %}    {% endblock %}{% block page_title %}    {
    { self.title() }}{% endblock %}{% block main_content %} 帖子管理页面{% endblock %}

    其它几个一样

    cms_comments.htmlcms_boards.htmlcms_fusers.htmlcms_cusers.htmlcms_croles.html

    (2)cms/decorators.py

    添加一个权限验证的装饰器

    def permission_required(permission):    def outter(func):        @wraps(func)        def inner(*args,**kwargs):            user = g.cms_user            if user.has_permission(permission):                return func(*args,**kwargs)            else:                return redirect(url_for('cms.index'))        return inner    return outter

    (3)cms/views.py

    @bp.route('/posts/')@login_required@permission_required(CMSPermission.POSTER)def posts():    return render_template('cms/cms_posts.html')@bp.route('/comments/')@login_required@permission_required(CMSPermission.COMMENTER)def comments():    return render_template('cms/cms_comments.html')@bp.route('/boards/')@login_required@permission_required(CMSPermission.BOARDER)def boards():    return render_template('cms/cms_boards.html')@bp.route('/fusers/')@login_required@permission_required(CMSPermission.FRONTUSER)def fusers():    return render_template('cms/cms_fusers.html')@bp.route('/cusers/')@login_required@permission_required(CMSPermission.CMSUSER)def cusers():    return render_template('cms/cms_cusers.html')@bp.route('/croles/')@login_required@permission_required(CMSPermission.ALL_PERMISSION)def croles():    return render_template('cms/cms_croles.html')

    (4)cms/cms_base.html

    修改url链接

    {% set cms_user = g.cms_user %}                {% if cms_user.has_permission(CMSPermission.POSTER) %}                    
  • 帖子管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.COMMENTER) %}
  • 评论管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.BOARDER) %}
  • 板块管理
  • {% endif %} {% if cms_user.has_permission(CMSPermission.FRONTUSER) %} {% endif %} {% if cms_user.has_permission(CMSPermission.CMSUSER) %} {% endif %} {% if cms_user.is_developer %}
  • CMS组管理
  • {% endif %}

     

    转载地址:http://uwlul.baihongyu.com/

    你可能感兴趣的文章
    SVN使用svn+ssh协议连接服务器时重复提示输入密码 解决办法
    查看>>
    微信公众平台开发(107) 分享到朋友圈和发送给好友
    查看>>
    GeoTiff如何存储颜色表的研究
    查看>>
    HTTP请求GET/POST查看工具
    查看>>
    php实现 坐标移动
    查看>>
    前端之HTML
    查看>>
    The Cats' Feeding Spots
    查看>>
    Python 进阶_OOP 面向对象编程_self 的实例绑定
    查看>>
    jquery内核学习(5)--对象的遍历
    查看>>
    在Android迷你广告上添加浮动的关闭按钮
    查看>>
    2dcontext
    查看>>
    企业级大数据处理方案-01
    查看>>
    计算机的组成与操作系统
    查看>>
    包冲突getJspApplicationContext
    查看>>
    Webrtc入门——基于阿里云ubuntu 最新webrtc Android平台编译详细说明
    查看>>
    贴一份用delphi修改注册表改网卡MAC地址的代码
    查看>>
    Deep Learning(深度学习)学习笔记整理系列之(三)
    查看>>
    网页布局之Div vs Table (2)
    查看>>
    可变参数列表
    查看>>
    BouncyCastle.Crypto的RSA算法调用源码
    查看>>